<?php

/**
 * 产生随机字符串
 *
 * @param    int        $length  输出长度
 * @param    string     $chars   可选的 ，默认为 0123456789
 * @return   string     字符串
 */
function random($length, $chars = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM') {
    $hash = '';
    $max = strlen($chars) - 1;
    for($i = 0; $i < $length; $i++) {
        $hash .= $chars[mt_rand(0, $max)];
    }
    return $hash;
}


/**
 * 数据签名认证
 * @param  array  $data 被认证的数据
 * @return string       签名
 * @author 麦当苗儿 <zuojiazi@vip.qq.com>
 */
function data_auth_sign($data) {
    //数据类型检测
    if(!is_array($data)){
        $data = (array)$data;
    }
    ksort($data); //排序
    $code = http_build_query($data); //url编码并生成query字符串
    $sign = sha1($code); //生成签名
    return $sign;
}

/**
 * 格式化字节大小
 * @param  number $size      字节数
 * @param  string $delimiter 数字和单位分隔符
 * @return string            格式化后的带单位的大小
 * @author 麦当苗儿 <zuojiazi@vip.qq.com>
 */
function format_bytes($size, $delimiter = '') {
    $units = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');
    for ($i = 0; $size >= 1024 && $i < 5; $i++) $size /= 1024;
    return round($size, 2) . $delimiter . $units[$i];
}

//基于数组创建目录和文件
function create_dir_or_files($files){
    foreach ($files as $key => $value) {
        if(substr($value, -1) == '/'){
            mkdir($value);
        }else{
            @file_put_contents($value, '');
        }
    }
}



/**
 * 判断手机号码是否正确
 * @param string $mobile
 * @return bool
 */
function is_mobile($mobile){
    return !!preg_match('/^(13|14|15|17|18)\d{9}$/', $mobile);
}

/**
 * 判断是否正确的邮箱地址
 * @param string $email
 * @return bool
 */
function is_email($email){
    return !!preg_match('/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/', $email);
}

/**
 * 是否电话号码
 * @param string $phone
 * @return bool
 */
function is_phone($phone){
    return !!preg_match('/(^(\d{3,4}-)?\d{7,8})$|(13[0-9]{9})/', $phone);
}

/**
 * 判断是否正确的URL
 * @param string $url URL地址
 * @return bool
 */
function is_url($url){
    return !!preg_match('/^http(s?):\/\/(?:[A-za-z0-9-]+\.)+[A-za-z]{2,4}(?:[\/\?#][\/=\?%\-&~`@[\]\':+!\.#\w]*)?$/', $url);
}

/**
 * 获得当前页面URL
 * @param bool $domain 是否带域名
 * @return string
 */
function get_self_url($domain = false){
    $domain = $domain ? $_SERVER['HTTP_HOST'] : null;
    $url   =  __SELF__;
    if($domain){
        $url   =  (is_ssl()?'https://':'http://').$domain.$url;
    }
    return $url;
}
